Computer systems are increasingly important components in providing images for modeling, predicting, and experimenting with events in many situations. Examples of such situations include flight simulators for training exercises, computer aided drafting and design (CAD) applications for engineers and architects, animated activities in movies and video games, and diagnostic medical devices for physicians. Improvements in display systems, including the development of high resolution display screens, allows greater precision and clarity in displaying geometric objects.
In general, display systems comprise three components: a frame buffer, a monitor, and a display controller. The frame buffer is a digital memory for storing the image to be displayed as a series of binary values. The monitor includes a screen having an array of picture elements, i.e., pixels. Each pixel represents a dot on the screen and can be programmed to a particular color or intensity with thousands of pixels programmed to represent a displayed image. The frame buffer stores these pixel values. The display controller typically is the interface for passing the contents of the frame buffer to the monitor by converting the data from the frame buffer to a video signal for display by the monitor.
Typically, 3D image rendering involves several processing procedures, such as alpha blending, texture mapping, and Z buffering. Image data stored in memory is usually retrieved in a stochastic manner during these processing procedures and suffers from significant bandwidth problems. Attempts to combat bandwidth problems have included providing memory chips that have separate ports for each type of data. However, the pin count for a device using the memory increases significantly as the number of bits being accessed increases. For example, for 64 bits of data, a chip would typically require about 90 pins to support the data bits and account for power and ground considerations. Further, increases in the size of the chips increases overall cost, power, and area requirements. Another attempt to reduce pin-count problems involves the use of a Rambus which enables very high on-board data transfers with the use of a very fast clock. Unfortunately, while Rambus does achieve fast access for sequential data bursts, accesses which are more random, such as those for texture mapping, do not provide as much speed increase.
What is needed is a more efficient manner of accessing memory randomly, especially during graphics rendering.